//==================================
// [] The PlutoEA Project []
// http://opensvn.csie.org/PlutoEA
// ---------------------------------
// - dԸ} - 
//===================================
// - 6.3
//===================================

function	script	F_Kafra	{
	callfunc "F_ClearGarbage"; //MLܼ

	//wry
	switch(getarg(0)){
		//w]
		default:
		case 0:
			mes "["+ strnpcinfo(0) +"]";
			mes "w{. dԤq";
			mes "Hɬz̪A.";
			mes "ݭnAȶ?";
			break;

		//ܵi
		case 1:
			mes "["+ strnpcinfo(0) +"]";
			mes "w...{. dԪAȤq...";
			mes "F...]|...z...A...";
			mes "...ݭn...Aȶ?"; 
			break;

		//|
		case 2:
			set @GID,getcharid(2);
			mes "["+ strnpcinfo(0) +"]";
	 		mes "w{ '^ff0000" + GetGuildName(@GID) + "^000000'";
			mes "|,";
			mes "dԪA";
			mes "ûbU쨭䬰zAȪ";
			break;

		//ѬzBB굥
		case 3:
			mes "["+ strnpcinfo(0) +"]";
			mes "w{AdԤqHɬz̪AȡA";
			mes "ݭnAȶ?";
			break;

		//㭵ùJB
		case 4:
			mes "["+ strnpcinfo(0) +"]";
			mes "w{AdԤqHɬz̪AȡA";
			mes "ݭnAȶ?";
			break;

		//L
		case 5:
			break;

		//ƶ
		case 6:
			mes "["+ strnpcinfo(0) +"]";
			mes "w{AdԤq";
			mes "Hɬz̪AȪA";
			mes "ݭnAȶ?";
			break;
	}
	next;

	M_Menu:
		cleararray @K_Menu0$[0],"",7;
	switch(getarg(1)){
		// xsMܮw A
		case 1:
			setarray @K_Menu0$[0],"xsA","ܮwA.","`.";
			break;

		// uܮwA
		case 2:
			setarray @K_Menu0$[0],"ܮwA.","`.";
			break;

		// LǰeA
		case 3: 
			setarray @K_Menu0$[0],"xsA","ܮwA.","A.","LTT{."," `.";
			break;

		// Case 4 OqoowTǰeT

		// Sxsζǰe
		case 5:
			setarray @K_Menu0$[0],"ܮwA.","A.","LTT{."," `.";
			break;

		// uܮwνT{LT
		case 6:
			setarray @K_Menu0$[0],"ܮwA.","LTT{."," `.";
			break;

		// uxsBܮwB
		case 7:
			setarray @K_Menu0$[0],"xsA","ܮwA.","A.","`.";
			break;

		// vt
		case 8:
			setarray @K_Menu0$[0],"xsA","ܮwA.","LTT{.","`.";
			break;

		// wԥd (S)
		case 9:
			setarray @K_Menu0$[0],"xsA","ܮwA.","ǰeA.","A.","LTT{.","`.";
			break;

		// Zکԥd (S)
		case 10:
			setarray @K_Menu0$[0],"xsA","ܮwA.","ǰeA.","LT.","`.";
			break;

		// I~qd (S)
		case 11:
			setarray @K_Menu0$[0],"ܮwA."," LTT{.","`.";

		// ƶd (S)
		case 12:
			setarray @K_Menu0$[0],"xsA","ܮwA","ǰeA","A","T{䥦","";
			break;

		// 㭵ùJd (S)
		case 13:
			setarray @K_Menu0$[0],"ϥxsA","ϥέܮwA","ǰeA.","A","T{䥦T","";
			break;

		// X[d (S)
		case 14:
			setarray @K_Menu0$[0],"ϥxsA","ϥέܮwA","ϥΤA","T{䥦T","";
			break;

		// եd (S)
		case 15:
			setarray @K_Menu0$[0],"xsA","ܮwA","ǰeA","A","T{䥦T","";
			break;

		// qd
		default:
			setarray @K_Menu0$[0],"xsA","ܮwA.","ǰeA.","A."," LT.","`.";
			break;
	}

	// |d
	if(getarg(0)==2) {
		cleararray @K_Menu0$[0],"",7;
		setarray @K_Menu0$[0],"ϥέܮwA","ϥΪŶʪA","ϥΤA","";
		//setarray @K_Menu0$[0],"ϥέܮwA","ϥΤ|ܮwA","ϥΪŶʪA","ϥΤA","";	//TROxS|ܮwA
	}
	menu 	@K_Menu0$[0],K_Menu0,@K_Menu0$[1],K_Menu1,@K_Menu0$[2],K_Menu2,
		@K_Menu0$[3],K_Menu3,@K_Menu0$[4],K_Menu4,@K_Menu0$[5],K_Menu5,
		@K_Menu0$[6],K_Menu6,@K_Menu0$[7],K_Menu7;
	K_Menu0:
		set @num,0;
		goto K_Menuf;
	K_Menu1:
		set @num,1;
		goto K_Menuf;
	K_Menu2:
		set @num,2;
		goto K_Menuf;
	K_Menu3:
		set @num,3;
		goto K_Menuf;
	K_Menu4:
		set @num,4;
		goto K_Menuf;
	K_Menu5:
		set @num,5;
		goto K_Menuf;
	K_Menu6:
		set @num,6;
		goto K_Menuf;
	K_Menu7:
		set @num,7;
	K_Menuf:
		if (@K_Menu0$[@num] == "xsA" || @K_Menu0$[@num] == "ϥxsA") return;
		if (@K_Menu0$[@num] == "ܮwA." || @K_Menu0$[@num] == "ϥέܮwA" || @K_Menu0$[@num] == "ܮwA"){
			if(getarg(0) == 2) callfunc "F_KafStor",2,0,0;
			else callfunc "F_KafStor",0,getarg(3),getarg(0);
			next;
			goto M_Menu;
		}
		if (@K_Menu0$[@num] == "ǰeA." || @K_Menu0$[@num] == "ϥΪŶʪA" || @K_Menu0$[@num] == "ǰeA"){
			// qoowTǰeT
			if(getarg(1) == 4 || getarg(1) == 12 || getarg(1) == 13){
				mes "["+ strnpcinfo(0) +"]";
				mes "ڭ̥dԪAȦbqoow`qA";
				mes "]Mqoow @M";
				mes "wA";
				mes "'^ff0000bqoowǰeA^000000'";
				mes "YA";
				mes "ثeǰeAȪ";
				next;
				mes "["+ strnpcinfo(0) +"]";
				mes "Qnʨ䥦ϰɡA";
				mes "ШϥέŸa";
				next;
				goto M_Menu;
			}
			callfunc "F_KafTele",getarg(0);
			goto M_Menu;
		}
		if (@K_Menu0$[@num] == "A." || @K_Menu0$[@num] == "ϥΤA" || @K_Menu0$[@num] == "A"){
			if(callfunc("F_KafCart",getarg(0),getarg(4)) == 1) next;
			goto M_Menu;
		}
		if (@K_Menu0$[@num] == " LT." || @K_Menu0$[@num] == " LTT{." || @K_Menu0$[@num] == "LTT{." || @K_Menu0$[@num] == "LT." || @K_Menu0$[@num] == "T{䥦" || @K_Menu0$[@num] == "T{䥦T"){
			callfunc "F_KafInfo",getarg(2);
			goto M_Menu;
		}
		if (@K_Menu0$[@num] == "`." || @K_Menu0$[@num] == " `." || @K_Menu0$[@num] == "" || @K_Menu0$[@num] == ""){
			callfunc "F_KafEnd",getarg(0),0;
			end;
		}
		if (@K_Menu0$[@num] == "ϥΤ|ܮwA"){
			callfunc "F_KafStor",1,0;
			next;
			goto M_Menu;
		}

}


// Storage Function =======================================================
function	script	F_KafStor	{
	// Unable to access Guild Storage (Busy)
	if(getarg(0) == 1){
		if(guildopenstorage(0) == 1){
			mes "["+ strnpcinfo(0) +"]";
			mes "uܩpAL|bϥέܮw";
			mes "еy@U";
			close2;
			cutin "", 255;
			end;
		}
		cutin "", 255;
		close;
	}

	// Unable to access Normal Storage (Insufficient Basic Skills)
	if(basicskillcheck() && getskilllv(1) < 6){
		mes "["+ strnpcinfo(0) +"]";
		// Niflheim Specific Message
		if (getarg(2) == 1) {
			mes "...藍_...";
			mes "...Ǫ...򥻧...ޯ";
			mes "nF6...6HW...~...iH...";
			return;
		}
		mes "藍_";
		mes "QnϥέܮwAȪܡAǪ̪򥻧ޯ൥ŭnF 6ťHW.";
		return;
	}

	// Accessing Normal Storage (Skipped if accessing Storage from Guild castle)
	if(getarg(0) != 2){
		// Consume "Free Ticket for Kafra Storage" if available.
		if(countitem(7059)) delitem 7059,1;
		else {
			if(Zeny<getarg(1)){
				mes "["+ strnpcinfo(0) +"]";
				// Niflheim Specific Message
				if (getarg(2) == 1) {
					percentheal -50,-50;
					mes "...";
					mes "......";
					mes "ϥζOάO150......";
					return;
				}
				//Standard Message
				mes "Uȡ@zB.";
				mes "ܮwϥζOάO "+getarg(1)+".";
				return;
			}
			set Zeny, Zeny-getarg(1);
			set RESRVPTS, RESRVPTS + (getarg(1)/5);
		}
	}

	// Surpress the "End" message if in guild castle.
	if (getarg(0) != 2) {
		// Niflheim specific Message
		if (getarg(2) == 1) {
			percentheal 0,-10;
			mes "["+ strnpcinfo(0) +"]";
			mes "...z...ϥ...";
			mes "...z...ϥ...";
			mes "...z...ϥ...";
			mes "...z...ϥ...";
			mes "...z...ϥ...";
		}
		// Normal message
		else {
			mes "["+ strnpcinfo(0) +"]";
		}
	}
	callfunc("F_CheckKafCode");
	mes "n}ܮwF";
	mes "±zϥ.";
	close2;
	openstorage;
	cutin "", 255;
	end;
}


// Teleport Function ==================================================
function	script	F_KafTele	{
	mes "["+ strnpcinfo(0) +"]";
	mes "лAQnha.";
	next;

	menu 	@wrpC$[0],M_Wrp0, @wrpC$[1],M_Wrp1, @wrpC$[2],M_Wrp2, @wrpC$[3],M_Wrp3, 
		@wrpC$[4],M_Wrp4, @wrpC$[5],M_Wrp5, @wrpC$[6],M_Wrp6;

	M_Wrp0:
		set @num, 0;
		goto L_Warp;
	M_Wrp1:
		set @num, 1;
		goto L_Warp;
	M_Wrp2:
		set @num, 2;
		goto L_Warp;
	M_Wrp3:
		set @num, 3;
		goto L_Warp;
	M_Wrp4:
		set @num, 4;
		goto L_Warp;
	M_Wrp5:
		set @num, 5;
		goto L_Warp;
	M_Wrp6:
		set @num, 6;

	L_Warp:
		if (@wrpC$[@num] == "") return;
		// Consume "Free Ticket for Kafra Transportation" if available.
		// Do not consume if in Guild castle
		if(countitem(7060) > 0 && getarg(0) != 2) delitem 7060,1;
		else {
			if (Zeny<@wrpP[@num]){
				mes "["+ strnpcinfo(0) +"]";
				mes "Uȡ@zB.";
				mes "ЦAT{";
				close2;
				cutin "", 255;
				end;
			}
			set Zeny, Zeny-@wrpP[@num];
			set RESRVPTS, RESRVPTS + (@wrpP[@num]/16);
		}
		if (@wrpD$[@num] == "㺸") warp "alberta", 117, 56;
		if (@wrpD$[@num] == "㺸") warp "aldebaran",168,112;
		if (@wrpD$[@num] == "J]q") warp "comodo", 209, 143;
		if (@wrpD$[@num] == "̴|oq") warp "izlude", 91, 105;
		if (@wrpD$[@num] == "N") warp "geffen", 120, 39;
		if (@wrpD$[@num] == "ùJ") warp "morocc", 156, 46;
		if (@wrpD$[@num] == "") warp "payon", 161, 58;
		if (@wrpD$[@num] == "w") warp "prontera", 116, 72;
		if (@wrpD$[@num] == "ǥ oq") warp "mjolnir_02", 99, 351;
		if (@wrpD$[@num] == "oִ Oq") warp "cmd_fild07", 127, 134;
		if (@wrpD$[@num] == "~HaU}]") warp "gef_fild10", 52, 326;
		if (@wrpD$[@num] == "Zک") warp "umbala", 100, 154;
		if (@wrpD$[@num] == "") warp "yuno", 158, 125;
		cutin "", 255;
		end;
}


// Cart Function ========================================================
function	script	F_KafCart	{
	// Ensure that the class wanting to rent a pushcart is a merchant
	if(baseClass != Job_Merchant){
		mes "["+ strnpcinfo(0) +"]";
		mes "ܩpA";
		mes "OӤHMKKBNvMΪA";
		return 1;
	}
	// Make sure the invoking character does not have a cart already
	else if(checkcart() == 1){
		if(getarg(1) == 13) mes "[d ¾]";
		else mes "["+ strnpcinfo(0) +"]";
		mes "AwgLF";
		return 1;
	}

	// Consume "Free Ticket for the Cart Service" if available.
	// Do not consume if in Guild castle.
	if(countitem(7061) > 0 && getarg(0) != 2) delitem 7061,1;
	else {
		mes "["+ strnpcinfo(0) +"]";
		mes "O "+getarg(1)+"";
		mes "pGSǬޯ઺";
		mes "OS";
		mes "٭n?";
		next;
		menu "Τ",-, "",M_End;
			if(Zeny<getarg(1)){
				if(getarg(1) == 13) mes "[d ¾]";
				else mes "["+ strnpcinfo(0) +"]";
				mes "˷RUȡAz";
				mes "Τݭn"+getarg(1)+"";
				return 1;
			}
			set Zeny,Zeny-getarg(1);
			set RESRVPTS, RESRVPTS + 48;
	}
	setcart;
	return 1;

M_End:
	return 0;
}


// Pass Function ===============================================================
function	script	F_KafGuide	{
	mes "["+ strnpcinfo(0) +"]";
	mes "WIP...";
	return;
}

// Special Reserve Points Function ===========================================
function	script	F_KafInfo	{

	sM_Menu:
//Uncomment next line to block Kafra Storage Protection
//	if(getarg(0) == 0) menu "Check Special Reserve Points.",sM_ResChk, "Kafra Employee Locations",sM_KafLoc, "`",sM_End;
	if(getarg(0) == 0) menu "IƲֿnT{",sM_ResChk, "ܮwKXA",sM_KafCode, "dԦm",sM_KafLoc, "`",sM_End;

	sM_ResChk:
		mes "["+ strnpcinfo(0) +"]";
		mes strcharinfo(0) + "UȪxWIƬO";
		mes RESRVPTS+ "I";
		next;
		mes "["+ strnpcinfo(0) +"]";
		mes "bdԥAiHxWIƥ洫ث~.";
		mes "ЦhΤKdԪAȡAKhoث~~";
		next;
		if(getarg(0) == 1) return;
		goto sM_Menu;

	sM_KafLoc:
		viewpoint 1,@viewpX[0],@viewpY[0],1,0xFF00FF;
		viewpoint 1,@viewpX[1],@viewpY[1],2,0xFF00FF;
		viewpoint 1,@viewpX[2],@viewpY[2],3,0xFF00FF;
		viewpoint 1,@viewpX[3],@viewpY[3],4,0xFF00FF;
		next;
		viewpoint 2,@viewpX[0],@viewpY[0],1,0xFF00FF;
		viewpoint 2,@viewpX[1],@viewpY[1],2,0xFF00FF;
		viewpoint 2,@viewpX[2],@viewpY[2],3,0xFF00FF;
		viewpoint 2,@viewpX[3],@viewpY[3],4,0xFF00FF;
		goto sM_Menu;

	sM_KafCode:
		callfunc("F_SetKafCode","["+ strnpcinfo(0) +"]","dԪA");

	sM_End:
		return;
}


//  禡 =====================================================
//  arg(0): used to determine what message to display.
//  arg(1): used to determine if save message is displayed.
//  arg(2): used to display the name of the area you're saving in.
//===================================================================
function	script	F_KafEnd	{
	mes "["+ strnpcinfo(0) +"]";
	//Save
	if(getarg(1)==1) {
		mes "wgxsnF";
		mes "±zϥ.";
	}

	// Generic End
	else if(getarg(0)==0 || getarg(0)==5 || getarg(0)==3) {
		mes "ڭ̥dԤqAȬOFUȭ̩ߩMKϥ. ڭ̷|ɧڭ̳̤jVOnAȻPY檺~޲z.";
		mes "±z̨ϥΧڭ̥dԤqA.";
	}

	else if(getarg(0)==4 || getarg(0)==6) {
		mes "ڭ̥dԤqAȬOAFUȭ̩ߩMKϥΡAڭ̷|ɧڭ̳̤jVOnAȻPY檺~޲zA";
		mes "±zϥ";
	}

	// Niflheim End
	else if(getarg(0)==1) {
		percentheal 0,- 25;
		mes "dԤqO...H..."; 
		mes "z...A..."; 
	}

	close2;
	cutin "", 255;
	end;
}

// T{ܮwKX 禡 ====================
function	script	F_CheckKafCode	{
	if(#kafra_code==0) return;
	mes "UȱzϥέܮwKXO@A";
	mes "пJAܮwKXG";
	set @code_,0;
	input @code_;
	if(@code_ != #kafra_code) {
		dispbottom "KX~";
		close2;
		cutin "",255;
		end;
	}
	set @kafcode_try,0;
	set @code_,0;
	mes "KXT{";
	mes "YN}ܮwA±zϥ";
	close2;
	openstorage;
	cutin "", 255;
	end;
}

// ]m /  /  ܮwKX 禡 ====================
// getarg(0) = NPC Name, getarg(1) = Company Name
function	script	F_SetKafCode	{
	mes getarg(0);
	if(#kafra_code) {
		mes "zܮwثeKXO@";
		mes "ݭnAȶ?";
		next;
		menu "KX -> 5000z",-,
		"KX -> 1000z",M_CLEAR,
		"",M_END;
	}
	else {
		mes ""+getarg(1)+" ozФ@sA";
		mes "'ܮwKX'\";
		next;
		menu "]mKX -> 5000z",M_SET,"",M_END;
	}

	mes getarg(0);
	mes "ХJz^0000FF±KX^000000.";
	set @code,callfunc("F_EntKafCode");
	if(@code==0 || @code != #kafra_code) {
		mes "KX~AЭsJ";
		emotion e_hmm;
		goto M_END;
	}
	next;

M_SET:
	mes getarg(0);
	mes "{bпJzn^FF0000KX^000000";
	set @code,callfunc("F_EntKafCode");
	if(@code==0) {
		mes "ӸXL";
		emotion e_hmm;
		goto M_END;
	}
	next;
	mes getarg(0);
	if(Zeny < 5000) goto L_ZENY;
	set Zeny,Zeny-5000;
	//set RESRVPTS, RESRVPTS + (5000/50);	//O_W[dI
	set #kafra_code,@code;
	mes "ܮwKXw]mA";
	mes "P±zϥ "+getarg(1)+".";
	emotion e_thx;
	goto M_END;	

M_CLEAR:
	mes getarg(0);
	mes "пJzܮwKX";
	set @code,callfunc("F_EntKafCode");
	if(@code==0) {
		mes "KX~AЭsJ";
		emotion e_hmm;
		goto M_END;
	}
	next;
	mes getarg(0);
	if(Zeny < 1000) goto L_ZENY;
	set Zeny,Zeny-1000;
	//set RESRVPTS, RESRVPTS + (1000/50);	//O_W[dI
	if(@code == #kafra_code) {
		set #kafra_code,0;
		mes "ܮwKXwA";
		mes "P±zϥ"+getarg(1)+".";
		emotion e_thx;
	}
	else {
		mes "KX~ANSz1000";
		emotion e_sry;
	}
	goto M_END;

L_ZENY:
	mes "zW";
	emotion e_cash;
M_END:
	close2;
	cutin "",255;
	end;
}

// Basic Password Validation Function ====================
function	script	F_EntKafCode	{
	mes "пJ 1000~10000000 Ʀr:";
	set @code_,0;
	set @kafcode_try,@kafcode_try+1;
	if(@kafcode_try>10) {
		set @kafcode_try,0;
		logmes "Hack: Tried to fit storage password.";
	}
	input @code_;
	if(@code_<1000) {
		mes "KX׹LuA";
		mes "пJ 1000~10000000 Ʀr";
		return 0;
	}
	if(@code_>10000000) {
		mes "KX׹L";
		mes "пJ 1000~10000000 Ʀr";
		return 0;
	}
	return @code_;
}
